草庐IT

C++ ifstream 到 char *

全部标签

c++ - 含参数 (const T&, const T&) 或 (const char (&)[N], const char (&)[M]) 的重载模板的模糊调用

对于下面的代码:#includeusingstd::cout;usingstd::endl;templateintcompare(constT&,constT&){coutintcompare(constchar(&)[N],constchar(&)[M]){cout当我用g++-std=c++1y编译代码时,它会提示:error:callofoverloaded‘compare(constchar[3],constchar[3])’isambiguouscompare("hi","is");根据模板重载的规则,可行的函数有:compare(constT&,constT&)withT=

c++ - 为什么 STL ifstream 和 ofstream 类不将 std::string 作为文件名?

这是对STL的提示。为什么他们将文件名参数作为(char*)而不是std::string?这似乎没有意义。关于这个主题还有另外两个问题:HowtoopenunicodefilenameswithSTLWindowsCodepageinteractionswithC++问题是我有很多看起来像这样的代码:std::ofstreamf(fname.c_str());当我希望它看起来像这样时:std::ofstreamf(fname);上述帖子中提到的其他问题是UTF-16与UTF-8的问题。(UTF-16可能包含会破坏POSIXAPI的NULL)。但这并不是真正的问题,因为实现可以在调用op

c++ - 为什么将 '0' 添加到 int 数字允许转换为 char?

我到处都看到这样的例子:inti=2;charc=i+'0';strings;s+=char(i+'0');但是,我还没有看到为什么添加零允许转换的解释。 最佳答案 如果您查看ASCII表,asciitable,您会看到数字从48(表示“0”)开始,一直到57(表示“9”)。因此,为了获得数字的字符代码,您可以将该数字添加到“0”的字符代码。 关于c++-为什么将'0'添加到int数字允许转换为char?,我们在StackOverflow上找到一个类似的问题:

c++ - ifstream 和 ofstream 或 fstream 使用 in 和 out

在处理文件时,以下两个示例中的哪一个是首选?一个提供比另一个更好的性能吗?有什么区别吗?ifstreaminput("input_file.txt");ofstreamoutput("output_file.txt");对比fstreaminput("input_file.txt",istream::in);fstreamoutput("output_file.txt",ostream::out); 最佳答案 在性能方面,在这种情况下可能只有微不足道的差异。您充其量只是节省了一点内存。重要的是第一种情况有助于语义:std::fstr

c# - 如何在 C++ CLR 中将数组 <System::Byte> 转换为 char*?

在我的项目中,我将一个byte[]从C#传递到C++CLR函数。C++CLR代码:voidTestByteArray(array^byteArray){...}C#代码:byte[]bytes=newbyte[128];...TestByteArray(bytes);在TestByteArray()函数中,我需要将byteArray转换为char*,以便我可以在nativeC++代码中使用它。我怎样才能进行这样的转换? 最佳答案 voidTestByteArray(array^byteArray){pin_ptrp=&byteArr

C++ map<string, vector<char>> 访问

我创建了一个vectormap,如下所示:map>myMap;stringkey="myKey";vectormyVector;myMap[key]=myVector;我希望能够将“char”附加到map中的vector,但我无法弄清楚如何访问所述vector以在创建特定键/值(vector)后附加。有什么建议么?我正在对char进行迭代,并且可能会在我进行时向vector添加很多内容,所以最好有一种简单的方法来完成它。谢谢。我希望map中的vector在我进行时被附加。我不需要原始vector...我只需要返回我创建的键/vector映射(在追加之后),这样我就可以将它传递给另一个函

c++ - ifstream::read 没有说明它真正读取了多少字节?

我正在使用ifstream::read来读取文件,ifstreamifs("a.txt");charbuf[1024];ifs.read(buf,1024);但是a.txt的大小可能小于1000字节,那么我应该如何知道从ifs中读取了多少字节? 最佳答案 您可以使用std::ifstream::gcount获取上次操作提取的字符数量:ifstreamifs("a.txt");charbuf[1024];ifs.read(buf,1024);size_textracted=ifs.gcount();或ifstreamifs("a.tx

c++ - 如何复制 const char* 类型变量的内容?

我知道它们之间的区别:char*a="string";charp[]="string";来自*a,它的作用如下...+-----++---+---+---+---+---+---+---+a:|*======>|s|t|r|i|n|g|\0|+-----++---+---+---+---+---+---+---+如果我想创建另一个变量说char*b;我希望它复制指针a指向的所有内容,而不是指向a的内容。+-----++---+---+---+---+---+---+---+a:|*======>|s|t|r|i|n|g|\0|+-----++---+---+---+---+---+--

c++ - ifstream,行尾并移至下一行?

如何使用std::ifstream检测并移动到下一行?voidreadData(ifstream&in){stringsz;getline(in,sz);cout>v;if(in.good())cout我知道如果发生错误,good会告诉我,但一旦发生错误,流就不再有效。在读取另一个int之前如何检查我是否在行尾? 最佳答案 使用ignore()忽略下一行之前的所有内容:in.ignore(std::numeric_limits::max(),'\n')如果您必须手动执行,只需检查其他字符以查看是否为“\n”charnext;whil

c++ - C 中指向 char 的指针的默认值

让我们有变量字符*s;我知道如果声明在全局范围内,它的值应该是0;如果它是在本地范围内声明的,它的值是未定义的(虽然它可能是0)。我在测试中遇到了一个问题,听起来像这样“定义为指针的值是多少char*sa)空b)空字符串c)未定义我真的很困惑我应该选择什么答案,因为如果它是在全局范围内声明的,那么该值将为空(我猜)。如果它是在本地范围内声明的,未定义的(虽然当我尝试它时它为零),并且当我尝试cout它时,没有打印任何内容(没有段错误,为什么?),这意味着它是一个空字符串(或者cout真的很棒吗?)。 最佳答案 你引用的问题很可能是由